www.gusucode.com > VC++ 分形图像编辑器源码源码程序 > VC++ 分形图像编辑器源码源码程序\code\AdjustFractal.cpp

    //贵州省安顺市第二高级中学 高二一班 蒋伟	
//2002.7.1
//请勿修改版权信息 谢谢
//Neil
// Download by http://www.NewXing.com
// AdjustFractal.cpp : implementation file
//

#include "stdafx.h"
#include "Fractal.h"
#include "AdjustFractal.h"
#include "mainfrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAdjustFractal dialog


CAdjustFractal::CAdjustFractal(CWnd* pParent /*=NULL*/)
	: CDialog(CAdjustFractal::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAdjustFractal)
	m_iBranchLength = 0;
	m_iBranchNum = 0;
	m_dblCutRate = 0.0;
	m_iLastBranchLength = 0;
	m_iLeftAngle = 0;
	m_iLineWidth = 0;
	m_iRightAngle = 0;
	m_bDrawPixel = FALSE;
	//}}AFX_DATA_INIT
	m_AdjustMsg = RegisterWindowMessage(MY_ADJUST_MSG);
}


void CAdjustFractal::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAdjustFractal)
	DDX_Control(pDX, IDC_COLOR, m_btnColor);
	DDX_Text(pDX, IDC_EDIT_BRANCH_LENGTH, m_iBranchLength);
	DDV_MinMaxUInt(pDX, m_iBranchLength, 1, 1000);
	DDX_Text(pDX, IDC_EDIT_BRANCH_NUM, m_iBranchNum);
	DDV_MinMaxUInt(pDX, m_iBranchNum, 1, 1000);
	DDX_Text(pDX, IDC_EDIT_CUT_RATE, m_dblCutRate);
	DDV_MinMaxDouble(pDX, m_dblCutRate, 0., 1.);
	DDX_Text(pDX, IDC_EDIT_LAST_BRANCH_LENGTH, m_iLastBranchLength);
	DDV_MinMaxUInt(pDX, m_iLastBranchLength, 1, 100);
	DDX_Text(pDX, IDC_EDIT_LEFT_ANGLE, m_iLeftAngle);
	DDV_MinMaxInt(pDX, m_iLeftAngle, 0, 360);
	DDX_Text(pDX, IDC_EDIT_LINE_WIDTH, m_iLineWidth);
	DDV_MinMaxUInt(pDX, m_iLineWidth, 1, 10);
	DDX_Text(pDX, IDC_EDIT_RIGHT_ANGLE, m_iRightAngle);
	DDV_MinMaxInt(pDX, m_iRightAngle, 0, 360);
	DDX_Check(pDX, IDC_CHECK_DRAW_PIXEL, m_bDrawPixel);
	//}}AFX_DATA_MAP
	if(pDX->m_bSaveAndValidate)
		m_Color=m_btnColor.GetColor();
	else
		m_btnColor.SetColor(m_Color);
}


BEGIN_MESSAGE_MAP(CAdjustFractal, CDialog)
	ON_WM_QUERYNEWPALETTE()
	ON_WM_PALETTECHANGED()
	ON_WM_CREATE()
	//{{AFX_MSG_MAP(CAdjustFractal)
	ON_BN_CLICKED(ID_APPLY_NOW, OnApplyNow)
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAdjustFractal message handlers


void CAdjustFractal::OnApplyNow() 
{
	if(UpdateData())
	{
		::PostMessage(((CMainFrame*)AfxGetMainWnd())->GetActiveView()->m_hWnd,m_AdjustMsg,ML_APPLY,0);
	}
}

void CAdjustFractal::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CDialog::OnLButtonDown(nFlags, point);
	SendMessage(WM_NCLBUTTONDOWN,HTCAPTION,0);
}

BOOL CAdjustFractal::OnQueryNewPalette()
{
	// CG: This function was added by the Palette Support component

	if (m_pPalette == NULL)
		return FALSE;
	
	// BLOCK
	{
		CClientDC dc(this);
		CPalette* pOldPalette = dc.SelectPalette(m_pPalette,
			GetCurrentMessage()->message == WM_PALETTECHANGED);
		UINT nChanged = dc.RealizePalette();
		dc.SelectPalette(pOldPalette, TRUE);

		if (nChanged == 0)
			return FALSE;
	}
	
	Invalidate();
	
	return TRUE;
}

void CAdjustFractal::OnPaletteChanged(CWnd* pFocusWnd)
{
	// CG: This function was added by the Palette Support component

	if (pFocusWnd == this || IsChild(pFocusWnd))
		return;
	
	OnQueryNewPalette();
}

CPalette* CAdjustFractal::SetPalette(CPalette* pPalette)
{
	// CG: This function was added by the Palette Support component

	// Call this function when the palette changes.  It will
	// realize the palette in the foreground to cause the screen
	// to repaint correctly.  All calls to CDC::SelectPalette in
	// painting code should select palettes in the background.

	CPalette* pOldPalette = m_pPalette;
	m_pPalette = pPalette;
	OnQueryNewPalette();
	return pOldPalette;
}

int CAdjustFractal::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;

	m_pPalette = NULL;
	return 0;
}